#include "raylib.h"
#include <iostream>
using namespace std;

int main()
{
    InitWindow(1200, 900, "角色动画演示");
    
    // 加载角色精灵图
    Image character = LoadImage("../assets/imgs/characters/character.png");
    ImageResize(&character,600,800);
    Texture chara_texture = LoadTextureFromImage(character);
    UnloadImage(character);
    
    // 关键：计算帧尺寸（根据你的精灵图实际情况修改）
    int frameCount = 3;                  // 总帧数
    int frameWidth = chara_texture.width / frameCount;  // 自动计算单帧宽度
    int frameHeight = chara_texture.height/4;             // 单帧高度（使用整个图片高度）
    
    // 定义动画帧（所有帧尺寸统一）
    Rectangle frames[frameCount];
    for (int i = 0; i < frameCount; i++)
    {
        frames[i] = {
            (float)(i * frameWidth),  // X坐标：按帧宽度递增
            0.0f,                     // Y坐标：保持在第一行
            (float)frameWidth,        // 统一宽度
            (float)frameHeight        // 统一高度
        };
    }

    // 动画参数
    int currentFrame = 0;
    float frameTime = 0.2f;  // 每帧停留时间    //修改此处更小还可以提高帧率切换的速度，即动作更快
    float frameTimer = 0.0f;    //动画帧时长
    Vector2 drawPosition = {300, 200};  // 固定绘制位置

    SetTargetFPS(120);

    while (!WindowShouldClose())
    {
        // 帧切换逻辑
        frameTimer += GetFrameTime();
        if (frameTimer >= frameTime)
        {
            currentFrame = (currentFrame + 1) % frameCount;
            frameTimer = 0;
        }
        
        // 绘制
        BeginDrawing();
        ClearBackground(WHITE);
        
        // 始终在同一个位置绘制当前帧
        DrawTextureRec(chara_texture, frames[currentFrame], drawPosition, WHITE);
        
        // 调试信息
        DrawText(TextFormat("帧尺寸: %dx%d", frameWidth, frameHeight), 10, 10, 20, BLACK);
        DrawText(TextFormat("当前帧: %d", currentFrame), 10, 40, 20, BLACK);
        
        EndDrawing();
    }
    
    UnloadTexture(chara_texture);
    CloseWindow();
    return 0;
}
